Skip to content

Глава 6: Планирование

Интеллектуальное поведение часто подразумевает нечто большее, чем простое реагирование на непосредственный ввод. Оно требует дальновидности, разбиения сложных задач на более мелкие, управляемые шаги и разработки стратегии для достижения желаемого результата. Именно здесь в игру вступает паттерн Планирования. В своей основе планирование — это способность агента или системы агентов формулировать последовательность действий для перехода от начального состояния к целевому состоянию.

Обзор паттерна Планирования

В контексте ИИ полезно думать об агенте планирования как о специалисте, которому вы делегируете сложную цель. Когда вы просите его "организовать командный выезд", вы определяете что — цель и её ограничения — но не как. Основная задача агента состоит в том, чтобы автономно проложить путь к этой цели. Он должен сначала понять начальное состояние (например, бюджет, количество участников, желаемые даты) и целевое состояние (успешно забронированный выезд), а затем найти оптимальную последовательность действий для их соединения. План не известен заранее; он создается в ответ на запрос.

Отличительной чертой этого процесса является адаптивность. Первоначальный план — это лишь отправная точка, а не жесткий сценарий. Истинная сила агента заключается в его способности включать новую информацию и направлять проект в обход препятствий. Например, если предпочитаемое место проведения становится недоступным или выбранный кейтеринг полностью забронирован, способный агент не просто терпит неудачу. Он адаптируется. Он регистрирует новое ограничение, переоценивает свои варианты и формулирует новый план, возможно, предлагая альтернативные места проведения или даты.

Однако крайне важно признать компромисс между гибкостью и предсказуемостью. Динамическое планирование — это специфический инструмент, а не универсальное решение. Когда решение проблемы уже хорошо понято и воспроизводимо, ограничение агента заранее определенным, фиксированным рабочим процессом более эффективно. Этот подход ограничивает автономность агента, чтобы снизить неопределенность и риск непредсказуемого поведения, гарантируя надежный и последовательный результат. Поэтому решение об использовании агента планирования против простого агента выполнения задач зависит от одного вопроса: нужно ли обнаружить "как", или оно уже известно?

Практические применения и случаи использования

Паттерн Планирования является основным вычислительным процессом в автономных системах, позволяющим агенту синтезировать последовательность действий для достижения определенной цели, особенно в динамических или сложных средах. Этот процесс преобразует высокоуровневую цель в структурированный план, состоящий из дискретных, выполнимых шагов.

В таких областях, как автоматизация процедурных задач, планирование используется для оркестрации сложных рабочих процессов. Например, бизнес-процесс, такой как адаптация нового сотрудника, может быть разложен на направленную последовательность подзадач, таких как создание системных учетных записей, назначение обучающих модулей и координация с различными отделами. Агент генерирует план для выполнения этих шагов в логическом порядке, вызывая необходимые инструменты или взаимодействуя с различными системами для управления зависимостями.

В робототехнике и автономной навигации планирование является фундаментальным для обхода пространства состояний. Система, будь то физический робот или виртуальная сущность, должна генерировать путь или последовательность действий для перехода от начального состояния к целевому состоянию. Это включает оптимизацию по таким метрикам, как время или потребление энергии, при соблюдении экологических ограничений, таких как избегание препятствий или соблюдение правил дорожного движения.

Этот паттерн также критически важен для структурированного синтеза информации. Когда агенту поручается генерировать сложный вывод, такой как исследовательский отчет, он может сформулировать план, включающий отдельные фазы для сбора информации, суммирования данных, структурирования содержания и итеративного уточнения. Аналогично, в сценариях клиентской поддержки, включающих многоэтапное решение проблем, агент может создать и следовать систематическому плану для диагностики, реализации решения и эскалации.

По сути, паттерн Планирования позволяет агенту выйти за рамки простых, реактивных действий к целенаправленному поведению. Он предоставляет логическую структуру, необходимую для решения проблем, требующих связной последовательности взаимозависимых операций.

Практический код (Crew AI)

Следующий раздел продемонстрирует реализацию паттерна Планировщика с использованием фреймворка Crew AI. Этот паттерн включает агента, который сначала формулирует многошаговый план для решения сложного запроса, а затем выполняет этот план последовательно.

python
import os
from dotenv import load_dotenv
from crewai import Agent, Task, Crew, Process
from langchain_openai import ChatOpenAI

# Load environment variables from .env file for security
load_dotenv()

# 1. Explicitly define the language model for clarity
llm = ChatOpenAI(model="gpt-4-turbo")

# 2. Define a clear and focused agent
planner_writer_agent = Agent(
    role='Article Planner and Writer',
    goal='Plan and then write a concise, engaging summary on a specified topic.',
    backstory=(
        'You are an expert technical writer and content strategist. '
        'Your strength lies in creating a clear, actionable plan before writing, '
        'ensuring the final summary is both informative and easy to digest.'
    ),
    verbose=True,
    allow_delegation=False,
    llm=llm  # Assign the specific LLM to the agent
)

# 3. Define a task with a more structured and specific expected output
topic = "The importance of Reinforcement Learning in AI"
high_level_task = Task(
    description=(
        f"1. Create a bullet-point plan for a summary on the topic: '{topic}'.\n"
        f"2. Write the summary based on your plan, keeping it around 200 words."
    ),
    expected_output=(
        "A final report containing two distinct sections:\n\n"
        "### Plan\n"
        "- A bulleted list outlining the main points of the summary.\n\n"
        "### Summary\n"
        "- A concise and well-structured summary of the topic."
    ),
    agent=planner_writer_agent,
)

# Create the crew with a clear process
crew = Crew(
    agents=[planner_writer_agent],
    tasks=[high_level_task],
    process=Process.sequential,
)

# Execute the task
print("## Running the planning and writing task ##")
result = crew.kickoff()
print("\n\n---\n## Task Result ##\n---")
print(result)

Этот код использует библиотеку CrewAI для создания ИИ-агента, который планирует и пишет резюме по заданной теме. Он начинается с импорта необходимых библиотек, включая Crew.ai и langchain_openai, и загрузки переменных окружения из файла .env. Языковая модель ChatOpenAI явно определена для использования с агентом. Создается Агент с именем planner_writer_agent со специфической ролью и целью: планировать, а затем писать краткое резюме. Предыстория агента подчеркивает его экспертизу в планировании и техническом письме. Определяется Задача с четким описанием: сначала создать план, а затем написать резюме на тему "Важность обучения с подкреплением в ИИ", с определенным форматом для ожидаемого вывода. Собирается Команда с агентом и задачей, настроенная на их последовательную обработку. Наконец, вызывается метод crew.kickoff() для выполнения определенной задачи, и результат выводится на печать.

Google DeepResearch

Google Gemini DeepResearch (см. Рис.1) — это агентная система, предназначенная для автономного поиска и синтеза информации. Она функционирует через многоэтапный агентный конвейер, который динамически и итеративно запрашивает Google Search для систематического исследования сложных тем. Система спроектирована для обработки большого корпуса веб-источников, оценки собранных данных на релевантность и пробелы в знаниях, а также выполнения последующих поисков для их устранения. Итоговый результат консолидирует проверенную информацию в структурированное, многостраничное резюме с цитатами к оригинальным источникам.

Развивая эту идею, работа системы — это не единичное событие запрос-ответ, а управляемый, долгосрочный процесс. Он начинается с деконструкции пользовательского промпта в многоточечный исследовательский план (см. Рис. 1), который затем представляется пользователю для просмотра и модификации. Это позволяет совместно формировать траекторию исследования перед выполнением. После одобрения плана агентный конвейер инициирует свой итеративный цикл поиска и анализа. Это включает не просто выполнение серии предопределенных поисков; агент динамически формулирует и уточняет свои запросы на основе собираемой информации, активно выявляя пробелы в знаниях, подтверждая точки данных и разрешая расхождения.


Рис. 1: Агент Google Deep Research генерирует план выполнения для использования Google Search в качестве инструмента.

Ключевым архитектурным компонентом является способность системы управлять этим процессом асинхронно. Такая конструкция обеспечивает устойчивость исследования, которое может включать анализ сотен источников, к единичным точкам отказа и позволяет пользователю отключиться и получить уведомление по завершении. Система также может интегрировать пользовательские документы, объединяя информацию из частных источников с веб-исследованием. Итоговый результат — это не просто конкатенированный список находок, а структурированный, многостраничный отчет. На этапе синтеза модель выполняет критическую оценку собранной информации, выявляя основные темы и организуя содержание в связное повествование с логическими разделами. Отчет создается интерактивным, часто включая такие функции, как аудиообзор, графики и ссылки на оригинальные цитируемые источники, позволяя пользователю проверять и далее исследовать. В дополнение к синтезированным результатам модель явно возвращает полный список источников, которые она искала и консультировала (см. Рис.2). Они представлены как цитаты, обеспечивая полную прозрачность и прямой доступ к первичной информации. Весь этот процесс преобразует простой запрос в исчерпывающий, синтезированный корпус знаний.

Рис. 2: Пример выполнения плана Deep Research, результатом которого является использование Google Search в качестве инструмента для поиска различных веб-источников.

Смягчая значительные временные и ресурсные инвестиции, необходимые для ручного сбора и синтеза данных, Gemini DeepResearch предоставляет более структурированный и исчерпывающий метод для обнаружения информации. Ценность системы особенно очевидна в сложных, многогранных исследовательских задачах в различных областях.

Например, в конкурентном анализе агент может быть направлен на систематический сбор и сопоставление данных о рыночных трендах, спецификациях продуктов конкурентов, общественном мнении из разнообразных онлайн-источников и маркетинговых стратегиях. Этот автоматизированный процесс заменяет трудоемкую задачу ручного отслеживания множества конкурентов, позволяя аналитикам сосредоточиться на стратегической интерпретации высокого порядка, а не на сборе данных (см. Рис. 3).

Рис. 3: Итоговый результат, сгенерированный агентом Google Deep Research, анализирующим от нашего имени источники, полученные с использованием Google Search в качестве инструмента.

Аналогично, в академическом исследовании система служит мощным инструментом для проведения обширных обзоров литературы. Она может выявлять и суммировать основополагающие статьи, отслеживать развитие концепций в многочисленных публикациях и картографировать возникающие исследовательские фронты в определенной области, тем самым ускоряя начальную и наиболее времязатратную фазу академического исследования.

Эффективность этого подхода проистекает из автоматизации итеративного цикла поиска и фильтрации, который является основным узким местом в ручном исследовании. Всесторонность достигается способностью системы обрабатывать больший объем и разнообразие информационных источников, чем обычно возможно для человека-исследователя в сопоставимые временные рамки. Этот более широкий охват анализа помогает снизить потенциал для селективной предвзятости и увеличивает вероятность обнаружения менее очевидной, но потенциально критической информации, ведя к более надежному и хорошо обоснованному пониманию предмета.

OpenAI Deep Research API

OpenAI Deep Research API — это специализированный инструмент, предназначенный для автоматизации сложных исследовательских задач. Он использует продвинутую агентную модель, которая может независимо рассуждать, планировать и синтезировать информацию из реальных источников. В отличие от простой модели вопрос-ответ, он принимает высокоуровневый запрос и автономно разбивает его на подвопросы, выполняет веб-поиски, используя свои встроенные инструменты, и предоставляет структурированный, богатый цитатами итоговый отчет. API предоставляет прямой программный доступ ко всему этому процессу, используя на момент написания такие модели, как o3-deep-research-2025-06-26 для высококачественного синтеза и более быстрая o4-mini-deep-research-2025-06-26 для приложений, чувствительных к задержкам.

Deep Research API полезен, поскольку автоматизирует то, что иначе потребовало бы часов ручного исследования, предоставляя профессиональные, основанные на данных отчеты, подходящие для информирования бизнес-стратегии, инвестиционных решений или политических рекомендаций. Его ключевые преимущества включают:

  • Структурированный, цитируемый вывод: Он производит хорошо организованные отчеты с встроенными цитатами, связанными с метаданными источников, обеспечивая проверяемость утверждений и их подкрепление данными.
  • Прозрачность: В отличие от абстрагированного процесса в ChatGPT, API раскрывает все промежуточные шаги, включая рассуждения агента, конкретные запросы веб-поиска, которые он выполнил, и любой код, который он запустил. Это позволяет детальную отладку, анализ и более глубокое понимание того, как был построен итоговый ответ.
  • Расширяемость: Он поддерживает Model Context Protocol (MCP), позволяя разработчикам подключать агента к частным базам знаний и внутренним источникам данных, сочетая публичное веб-исследование с проприетарной информацией.

Для использования API вы отправляете запрос к конечной точке client.responses.create, указывая модель, входной промпт и инструменты, которые может использовать агент. Ввод обычно включает system_message, которое определяет персону агента и желаемый формат вывода, вместе с user_query. Вы также должны включить инструмент web_search_preview и можете дополнительно добавить другие, такие как code_interpreter или пользовательские MCP инструменты (см. Главу 10) для внутренних данных.

python
from openai import OpenAI

# Initialize the client with your API key
client = OpenAI(api_key="YOUR_OPENAI_API_KEY")

# Define the agent's role and the user's research question
system_message = """You are a professional researcher preparing a structured, data-driven report.
Focus on data-rich insights, use reliable sources, and include inline citations."""

user_query = "Research the economic impact of semaglutide on global healthcare systems."

# Create the Deep Research API call
response = client.responses.create(
    model="o3-deep-research-2025-06-26",
    input=[
        {
            "role": "developer",
            "content": [{"type": "input_text", "text": system_message}]
        },
        {
            "role": "user",
            "content": [{"type": "input_text", "text": user_query}]
        }
    ],
    reasoning={"summary": "auto"},
    tools=[{"type": "web_search_preview"}]
)

# Access and print the final report from the response
final_report = response.output[-1].content[0].text
print(final_report)

# --- ACCESS INLINE CITATIONS AND METADATA ---
print("--- CITATIONS ---")
annotations = response.output[-1].content[0].annotations

if not annotations:
    print("No annotations found in the report.")
else:
    for i, citation in enumerate(annotations):
        # The text span the citation refers to
        cited_text = final_report[citation.start_index:citation.end_index]
        print(f"Citation {i+1}:")
        print(f"  Cited Text: {cited_text}")
        print(f"  Title: {citation.title}")
        print(f"  URL: {citation.url}")
        print(f"  Location: chars {citation.start_index}{citation.end_index}")

print("\n" + "="*50 + "\n")

# --- INSPECT INTERMEDIATE STEPS ---
print("--- INTERMEDIATE STEPS ---")

# 1. Reasoning Steps: Internal plans and summaries generated by the model.
try:
    reasoning_step = next(item for item in response.output if item.type == "reasoning")
    print("\n[Found a Reasoning Step]")
    for summary_part in reasoning_step.summary:
        print(f"  - {summary_part.text}")
except StopIteration:
    print("\nNo reasoning steps found.")

# 2. Web Search Calls: The exact search queries the agent executed.
try:
    search_step = next(item for item in response.output if item.type == "web_search_call")
    print("\n[Found a Web Search Call]")
    print(f"  Query Executed: '{search_step.action['query']}'")
    print(f"  Status: {search_step.status}")
except StopIteration:
    print("\nNo web search steps found.")

# 3. Code Execution: Any code run by the agent using the code interpreter.
try:
    code_step = next(item for item in response.output if item.type == "code_interpreter_call")
    print("\n[Found a Code Execution Step]")
    print("  Code Input:")
    print(f"  ```python\n{code_step.input}\n  ```")
    print("  Code Output:")
    print(f"  {code_step.output}")
except StopIteration:
    print("\nNo code execution steps found.")

Этот фрагмент кода использует OpenAI API для выполнения задачи "Deep Research". Он начинается с инициализации клиента OpenAI с вашим API-ключом, что критически важно для аутентификации. Затем он определяет роль ИИ-агента как профессионального исследователя и устанавливает исследовательский вопрос пользователя о экономическом воздействии семаглутида. Код конструирует API-вызов к модели o3-deep-research-2025-06-26, предоставляя определенное системное сообщение и пользовательский запрос в качестве ввода. Он также запрашивает автоматическое резюме рассуждений и включает возможности веб-поиска. После выполнения API-вызова он извлекает и печатает итоговый сгенерированный отчет.

Впоследствии он пытается получить доступ и отобразить встроенные цитаты и метаданные из аннотаций отчета, включая цитируемый текст, заголовок, URL и местоположение в отчете. Наконец, он инспектирует и печатает детали о промежуточных шагах, которые предприняла модель, таких как шаги рассуждений, вызовы веб-поиска (включая выполненный запрос) и любые шаги выполнения кода, если использовался интерпретатор кода.

С первого взгляда

Что: Сложные проблемы часто не могут быть решены одним действием и требуют дальновидности для достижения желаемого результата. Без структурированного подхода агентная система испытывает трудности с обработкой многогранных запросов, включающих множество шагов и зависимостей. Это затрудняет разбиение высокоуровневых целей на управляемую серию более мелких, выполнимых задач. Следовательно, система не может эффективно стратегически планировать, что приводит к неполным или неправильным результатам при столкновении со сложными целями.

Почему: Паттерн Планирования предлагает стандартизированное решение, заставляя агентную систему сначала создать связный план для достижения цели. Он включает разложение высокоуровневой цели на последовательность более мелких, выполнимых шагов или подцелей. Это позволяет системе управлять сложными рабочими процессами, оркестрировать различные инструменты и обрабатывать зависимости в логическом порядке. LLM особенно хорошо подходят для этого, поскольку они могут генерировать правдоподобные и эффективные планы на основе своих обширных обучающих данных. Этот структурированный подход превращает простого реактивного агента в стратегического исполнителя, который может проактивно работать над сложной целью и даже адаптировать свой план при необходимости.

Правило большого пальца: Используйте этот паттерн, когда запрос пользователя слишком сложен для обработки одним действием или инструментом. Он идеален для автоматизации многоэтапных процессов, таких как генерация детального исследовательского отчета, адаптация нового сотрудника или выполнение конкурентного анализа. Применяйте паттерн Планирования всякий раз, когда задача требует последовательности взаимозависимых операций для достижения финального, синтезированного результата.

Визуальное резюме
Рис.4; Паттерн проектирования Планирования

Ключевые выводы

  • Планирование позволяет агентам разбивать сложные цели на выполнимые, последовательные шаги.
  • Оно необходимо для обработки многоэтапных задач, автоматизации рабочих процессов и навигации в сложных средах.
  • LLM могут выполнять планирование, генерируя пошаговые подходы на основе описаний задач.
  • Явное промптирование или проектирование задач, требующих шагов планирования, поощряет это поведение в агентных фреймворках.
  • Google Deep Research — это агент, анализирующий от нашего имени источники, полученные с использованием Google Search в качестве инструмента. Он рефлексирует, планирует и выполняет.

Заключение

В заключение, паттерн Планирования является основополагающим компонентом, который возвышает агентные системы от простых реактивных респондентов до стратегических, целеориентированных исполнителей. Современные большие языковые модели предоставляют основную способность для этого, автономно разлагая высокоуровневые цели в связные, выполнимые шаги. Этот паттерн масштабируется от прямолинейного, последовательного выполнения задач, как продемонстрировано агентом CrewAI, создающим и следующим плану письма, до более сложных и динамических систем. Агент Google DeepResearch иллюстрирует это продвинутое применение, создавая итеративные исследовательские планы, которые адаптируются и эволюционируют на основе непрерывного сбора информации. В конечном счете, планирование предоставляет важный мост между человеческим намерением и автоматизированным выполнением для сложных проблем. Структурируя подход к решению проблем, этот паттерн позволяет агентам управлять сложными рабочими процессами и предоставлять исчерпывающие, синтезированные результаты.

Cсылки

  1. Google DeepResearch (Gemini Feature): gemini.google.com
  2. OpenAI ,Introducing deep research https://openai.com/index/introducing-deep-research/
  3. Perplexity, Introducing Perplexity Deep Research, https://www.perplexity.ai/hub/blog/introducing-perplexity-deep-research

Навигация

Назад: Глава 5. Использование инструментов
Вперед: Глава 7. Многоагентное сотрудничество